/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Smuggler
 */
@Entity
@Table(name = "ropa_blanca")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "RopaBlanca.findAll", query = "SELECT r FROM RopaBlanca r ORDER BY r.tipoRopa ASC"),
    @NamedQuery(name = "RopaBlanca.findByIdRopa", query = "SELECT r FROM RopaBlanca r WHERE r.idRopa = :idRopa"),
    @NamedQuery(name = "RopaBlanca.findByTipoRopa", query = "SELECT r FROM RopaBlanca r WHERE r.tipoRopa = :tipoRopa"),
    @NamedQuery(name = "RopaBlanca.findByTama\u00f1o", query = "SELECT r FROM RopaBlanca r WHERE r.tama\u00f1o = :tama\u00f1o"),
    @NamedQuery(name = "RopaBlanca.findByTipoRopaTama\u00f1o", query = "SELECT r FROM RopaBlanca r WHERE r.tipoRopa = :tipoRopa AND r.tama\u00f1o = :tama\u00f1o"),
    @NamedQuery(name = "RopaBlanca.findByDescripci\u00f3n", query = "SELECT r FROM RopaBlanca r WHERE r.descripci\u00f3n = :descripci\u00f3n"),
    @NamedQuery(name = "RopaBlanca.findByCantidad", query = "SELECT r FROM RopaBlanca r WHERE r.cantidad = :cantidad")})
public class RopaBlanca implements Serializable {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ropaBlanca")
    private Collection<ControlRopaBlancaRecibida> controlRopaBlancaRecibidaCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ropaBlanca")
    private Collection<ControlRopaBlancaEntregada> controlRopaBlancaEntregadaCollection;
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idRopa")
    private Integer idRopa;
    @Basic(optional = false)
    @Column(name = "tipo_ropa")
    private String tipoRopa;
    @Basic(optional = false)
    @Column(name = "tama\u00f1o")
    private String tamaño;
    @Column(name = "descripci\u00f3n")
    private String descripción;
    @Basic(optional = false)
    @Column(name = "cantidad")
    private int cantidad;

    public RopaBlanca() {
    }

    public RopaBlanca(Integer idRopa) {
        this.idRopa = idRopa;
    }

    public RopaBlanca(Integer idRopa, String tipoRopa, String tamaño, int cantidad) {
        this.idRopa = idRopa;
        this.tipoRopa = tipoRopa;
        this.tamaño = tamaño;
        this.cantidad = cantidad;
    }

    public Integer getIdRopa() {
        return idRopa;
    }

    public void setIdRopa(Integer idRopa) {
        Integer oldIdRopa = this.idRopa;
        this.idRopa = idRopa;
        changeSupport.firePropertyChange("idRopa", oldIdRopa, idRopa);
    }

    public String getTipoRopa() {
        return tipoRopa;
    }

    public void setTipoRopa(String tipoRopa) {
        String oldTipoRopa = this.tipoRopa;
        this.tipoRopa = tipoRopa;
        changeSupport.firePropertyChange("tipoRopa", oldTipoRopa, tipoRopa);
    }

    public String getTamaño() {
        return tamaño;
    }

    public void setTamaño(String tamaño) {
        String oldTamaño = this.tamaño;
        this.tamaño = tamaño;
        changeSupport.firePropertyChange("tama\u00f1o", oldTamaño, tamaño);
    }

    public String getDescripción() {
        return descripción;
    }

    public void setDescripción(String descripción) {
        String oldDescripción = this.descripción;
        this.descripción = descripción;
        changeSupport.firePropertyChange("descripci\u00f3n", oldDescripción, descripción);
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        int oldCantidad = this.cantidad;
        this.cantidad = cantidad;
        changeSupport.firePropertyChange("cantidad", oldCantidad, cantidad);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idRopa != null ? idRopa.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof RopaBlanca)) {
            return false;
        }
        RopaBlanca other = (RopaBlanca) object;
        if ((this.idRopa == null && other.idRopa != null) || (this.idRopa != null && !this.idRopa.equals(other.idRopa))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return this.tipoRopa+" "+this.tamaño+" "+this.descripción;
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }

    @XmlTransient
    public Collection<ControlRopaBlancaEntregada> getControlRopaBlancaEntregadaCollection() {
        return controlRopaBlancaEntregadaCollection;
    }

    public void setControlRopaBlancaEntregadaCollection(Collection<ControlRopaBlancaEntregada> controlRopaBlancaCollection) {
        this.controlRopaBlancaEntregadaCollection = controlRopaBlancaCollection;
    }

    public Collection<ControlRopaBlancaRecibida> getControlRopaBlancaRecibidaCollection() {
        return controlRopaBlancaRecibidaCollection;
    }

    public void setControlRopaBlancaRecibidaCollection(Collection<ControlRopaBlancaRecibida> controlRopaBlancaRecibidaCollection) {
        this.controlRopaBlancaRecibidaCollection = controlRopaBlancaRecibidaCollection;
    }
    
}
